From d30a0296896f5d9eabbf9884cf87ead645887d9c Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 7 Sep 2021 09:20:05 -0400 Subject: [PATCH] Add gdk_texture_save_to_tiff This is a companion to gdk_texture_save_to_png, using the tiff format, which will let us avoid lossy conversion of HDR data, since we can store floating point data. --- gdk/gdktexture.c | 32 ++++++++++++++++++++++++++++++++ gdk/gdktexture.h | 3 +++ 2 files changed, 35 insertions(+) diff --git a/gdk/gdktexture.c b/gdk/gdktexture.c index 4176552df8..7d1907be8d 100644 --- a/gdk/gdktexture.c +++ b/gdk/gdktexture.c @@ -748,3 +748,35 @@ gdk_texture_save_to_png_bytes (GdkTexture *texture) return gdk_save_png (texture); } + +/** + * gdk_texture_save_to_tiff: + * @texture: a `GdkTexture` + * @filename: (type filename): the filename to store to + * + * Store the given @texture to the @filename as a TIFF file. + * + * GTK will attempt to store data without loss. + * Returns: %TRUE if saving succeeded, %FALSE on failure. + * + * Since: 4.6 + */ +gboolean +gdk_texture_save_to_tiff (GdkTexture *texture, + const char *filename) +{ + GBytes *bytes; + gboolean result; + + g_return_val_if_fail (GDK_IS_TEXTURE (texture), FALSE); + g_return_val_if_fail (filename != NULL, FALSE); + + bytes = gdk_save_tiff (texture); + result = g_file_set_contents (filename, + g_bytes_get_data (bytes, NULL), + g_bytes_get_size (bytes), + NULL); + g_bytes_unref (bytes); + + return result; +} diff --git a/gdk/gdktexture.h b/gdk/gdktexture.h index 7e7de473d8..8d46702b79 100644 --- a/gdk/gdktexture.h +++ b/gdk/gdktexture.h @@ -93,6 +93,9 @@ gboolean gdk_texture_save_to_png (GdkTexture const char *filename); GDK_AVAILABLE_IN_4_6 GBytes * gdk_texture_save_to_png_bytes (GdkTexture *texture); +GDK_AVAILABLE_IN_4_6 +gboolean gdk_texture_save_to_tiff (GdkTexture *texture, + const char *filename); G_END_DECLS -- 2.30.2